package com.study.kt._02feature

/**
 * 类似于函数指针，一般和lambda一起使用
 * 函数的参数或返回值为函数的函数就是高阶函数
 */
fun main() {
    // ::表示函数的引用，直接传入div函数的引用
    println(calc(10, 2, ::div))
    println(calc(1, 2, ::sum))
}

//定义高阶函数
//函数接收两个number和一个接口两个num类型的参数返回一个num的函数
fun calc(num1: Int, num2: Int, block: (Int, Int) -> Int): Int {
    return block(num1, num2)
}

//定义(Int,Int)->Int类型的函数
fun div(num1: Int, num2: Int): Int {
    return num1 / num2
}

fun sum(num1: Int, num2: Int): Int {
    return num1 + num2
}